package db

import (
	"log"
	"time"

	"gorm.io/driver/mysql"
	"gorm.io/gorm"
	"gorm.io/gorm/logger"
)

// 全局 DB 实例
// TODO 后续可通过依赖注入优化，此处先简化
var MysqlDB *gorm.DB

// InitMysql 初始化 MySQL 连接
func InitMysql(dsn string) error {
	var err error
	// 配置 GORM 选项：日志级别、连接池
	MysqlDB, err = gorm.Open(mysql.Open(dsn), &gorm.Config{
		Logger: logger.Default.LogMode(logger.Info), // 开发环境显示 SQL 日志
	})
	if err != nil {
		return err
	}

	// 配置连接池
	sqlDB, err := MysqlDB.DB()
	if err != nil {
		return err
	}
	sqlDB.SetMaxOpenConns(100)                 // 最大打开连接数
	sqlDB.SetMaxIdleConns(20)                  // 最大空闲连接数
	sqlDB.SetConnMaxLifetime(30 * time.Minute) // 连接最大存活时间

	log.Println("MySQL init success")
	return nil
}
